package com.saydc.forms.puestos.generico;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

public class ActualizaPuestoGenericoForm extends ActionForm {
	
	private static final long serialVersionUID = 1L;
	private String nombre;
	private int idTipoEval;
	private String remMinima;
	private String remMaxima;
	private int[] seleccionados;
	
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public int getIdTipoEval() {
		return idTipoEval;
	}
	public void setIdTipoEval(int idTipoEval) {
		this.idTipoEval = idTipoEval;
	}
	public String getRemMinima() {
		return remMinima;
	}
	public void setRemMinima(String remMinima) {
		this.remMinima = remMinima;
	}
	public String getRemMaxima() {
		return remMaxima;
	}
	public void setRemMaxima(String remMaxima) {
		this.remMaxima = remMaxima;
	}
	public int[] getSeleccionados() {
		return seleccionados;
	}
	public void setSeleccionados(int[] seleccionados) {
		this.seleccionados = seleccionados;
	}
	
	@Override
	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		ActionErrors errors = new ActionErrors();
		if(nombre == null || nombre.length() < 1){
			errors.add("nombrePuesto", new ActionMessage("error.altaPuesto.nombre"));
		}
		if(idTipoEval == -1){
			errors.add("tipoEvaluacion", new ActionMessage("error.altaPuesto.tipoEvaluacion"));
		}
		if(remMinima == null || numeroValido(remMinima) == false){
			errors.add("remMinima", new ActionMessage("error.altaPuesto.remMinima"));
		}
		if(remMaxima == null || numeroValido(remMaxima) == false){
			errors.add("remMinima", new ActionMessage("error.altaPuesto.remMaxima"));
		}
		if((numeroValido(remMinima) && numeroValido(remMaxima)) && validaIntervalo(remMinima, remMaxima) == false){
			errors.add("errorIntervalo", new ActionMessage("error.altaPuesto.intervalo"));
		}
		return errors;
	}
	
	private boolean numeroValido(String valor){
		double numero = 0d;
		try{
			numero = Double.parseDouble(valor);
		}catch(Exception e){
			return false;
		}
		if(numero == 0){
			return false;
		}
		return true;
	}
	
	private boolean validaIntervalo(String remMinima, String remMaxima) {
		double minima = 0d;
		double maxima = 0d;
		try{
			minima = Double.parseDouble(remMinima);
			maxima = Double.parseDouble(remMaxima);
			if(minima >= maxima){
				return false;
			}
		}catch(Exception e){
			return false;
		}
		return true;
	}

}
